from enum import StrEnum, auto
from dataclasses import dataclass

# ---------- 枚举 ----------
class Camp(StrEnum):
    GOOD = auto()      # "GOOD"
    WEREWOLF = auto()  # "WEREWOLF"
    GOD = auto()       # "GOD"  （神职）


class CardName(StrEnum):
    # 狼人阵营
    WEREWOLF = "狼人"
    WHITE_WOLF = "白狼王"
    # 神职
    SEER = "预言家"
    WITCH = "女巫"
    HUNTER = "猎人"
    GUARD = "守卫"
    # 平民
    VILLAGER = "平民"
    WILD_CHILD = "野孩子"

# ---------- 结构体 ----------
@dataclass(slots=True, frozen=True)
class Card:
    camp: Camp
    name: CardName

    def __str__(self) -> str:
        return f"{self.name.value}({self.camp.value})"


# ---------- 示例 ----------
if __name__ == "__main__":
    wolf = Card(Camp.WEREWOLF, CardName.WEREWOLF)
    seer = Card(Camp.GOD, CardName.SEER)
    villager = Card(Camp.GOOD, CardName.VILLAGER)
    print(wolf, seer, villager)
    # 狼人(WEREWOLF) 预言家(GOD) 平民(GOOD)